package com.wechat.url.common;

import com.jfinal.config.*;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.c3p0.C3p0Plugin;
import com.jfinal.plugin.redis.RedisPlugin;
import com.jfinal.render.ViewType;
import com.wechat.url.common.model._MappingKit;
import com.wechat.url.controller.IndexController;
import redis.clients.jedis.Jedis;

/**
 * JFinal综合配置类
 */
public class Config extends JFinalConfig {
    /**
     * 配置常量
     *
     * @param me
     */
    public void configConstant(Constants me) {
        //读取配置文件(全应用生效)
        PropKit.use(Const.CONFIG_NAME);
        me.setViewType(ViewType.JSP);
        me.setDevMode(PropKit.getBoolean(Const.DEV_MODE));
    }

    /**
     * 配置路由
     *
     * @param me
     */
    public void configRoute(Routes me) {
        me.add("/", IndexController.class);
    }

    /**
     * 配置插件
     *
     * @param me
     */
    public void configPlugin(Plugins me) {
        // C3P0插件
        C3p0Plugin c3p0Plugin = new C3p0Plugin(PropKit.get(Const.JDBC_URL), PropKit.get(Const.USER), PropKit.get(Const.PASSWORD));
        me.add(c3p0Plugin);
        // ActiveRecord插件，负责数据库操作
        ActiveRecordPlugin activeRecordPlugin = new ActiveRecordPlugin(c3p0Plugin);
        me.add(activeRecordPlugin);
        activeRecordPlugin.setShowSql(PropKit.getBoolean("showSql"));
        _MappingKit.mapping(activeRecordPlugin);
        // REDIS插件
        //启动时先清空Redis
        this.clearRedis();
        RedisPlugin redisPlugin = new RedisPlugin(PropKit.get(Const.REDIS_MODULE_NAME), PropKit.get(Const.REDIS_HOST));
        me.add(redisPlugin);

    }

    private void clearRedis() {
        Jedis jedis = new Jedis(PropKit.get(Const.REDIS_HOST));
        jedis.flushAll();
    }

    /**
     * 配置拦截器(暂无)
     *
     * @param me
     */
    public void configInterceptor(Interceptors me) {

    }

    public void configHandler(Handlers me) {

    }
}
